package com.esunny.online.dao;

import com.esunny.online.domain.dto.ResourceListQuery;
import com.esunny.online.domain.entity.Resource;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author ：李先生
 * @date ：Created in 2020/7/16 15:33
 * @description： 资源文件的Dao层
 * @modified By：
 * @version: $
 */
@Mapper
public interface ResourceDao {

    /**
     * 查找未被审核的资源
     * @param resourceListQuery 查找条件
     * @return 未审核通过的资源
     */
    List<Resource> selectUncheckResource(ResourceListQuery resourceListQuery);

    /**
     * 查找未被审核的资源数量
     * @param resourceListQuery 查找条件
     * @return 未审核通过的资源数量
     */
    int selectUncheckCount(ResourceListQuery resourceListQuery);

    /**
     * 查询单条数据
     *
     * @param id 主键
     * @return resource数据
     */
    Resource getResourceById(int id);

    /**
     * 更新资源信息
     * @param resource 资源信息
     * @return 受影响数据
     */
    int updateResource(Resource resource);

    /**
     * 查询数据总数
     * @return 数据总数
     */
    int selectCount(ResourceListQuery resourceListQuery);

    /**
     * 查询所有的Resource
     *
     * @return 所有的resource数据
     */
    List<Resource> selectAll();

    /**
     * 分页查询 offset:起始行号 limit：多少条数据
     *
     * @param resourceListQuery 查询条件
     * @return 分页查询resource数据
     */
    List<Resource> selectResource(ResourceListQuery resourceListQuery);

    /**
     * 查询热点资源
     * @param pageSize 查询条数
     * @return 热点资源列表
     */
    List<Resource> queryHotResource(int pageSize);

    /**
     * 新增数据
     *
     * @param resource Res实例
     * @return 受影响行数
     */
    int addResource(Resource resource);

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 受影响行数
     */
    int deleteResource(int id);

    //...以此类推
}
